package org.rency.common.utils.converts;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

/**
 * JSON工具类
 * @author: user_rcy@163.com
 * <p>Created on 2015年11月4日</p>
 * @version: V1.0.0
 * @since JDK 1.8
 */
public class JsonConvert {

	/**
	 * json转换为java对象
	 * </br>Created on 2016年4月28日
	 * @param json
	 * @param clazz
	 * @return
	 */
	public static <T> T json2Object(String json,Class<T> clazz) {
		return JSON.parseObject(json, clazz);
	}
	
	/**
	 * 将java对象转换为json
	 * @param object
	 * @return
	 * @throws Exception
	 */
	public static String object2Json(Object object) {
		return JSON.toJSONString(object);
	}

	/**
	 * 将对象转换为json
	 * @param object
	 * @return
	 */
	public static String toJSONString(Object object){
		return JSON.toJSONString(object);
	}
	
	/**
	 * JSON字符串转Map
	 * </br>Created on 2015年12月25日
	 * @param json
	 * @return
	 */
	public static Map<String, String> convert2Map(String json){
		return JSON.parseObject(json, new TypeReference<Map<String, String>>() {});
	}
	
	public static Map<String, Object> convert2Map2(String json){
		return JSON.parseObject(json, new TypeReference<Map<String, Object>>() {});
	}
	
	/**
	 * Map转JSON字符串
	 * </br>Created on 2015年12月25日
	 * @param map
	 * @return
	 */
	public static String toJSONString(Map<String, Object> map){
		return JSON.toJSONString(map);
	}

	/**
	 * JSON转换为List
	 * </br>Created on 2016年1月2日
	 * @param json
	 * @return
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public static List<String> toList(String json) throws Exception{
		if(StringUtils.isBlank(json)){
			return new ArrayList<String>();
		}
		return json2Object(json, List.class);
	}
	
	/**
	 * List转换为JSON
	 * </br>Created on 2016年1月2日
	 * @param list
	 * @return
	 * @throws Exception 
	 */
	public static String toList(List<String> list) throws Exception{
		if(list == null || list.size() == 0){
			throw new IllegalArgumentException();
		}
		return toJSONString(list);
	}
	
}
